<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
</html>

<script>
  // statement -> 声明语句：
  // `var 变量名 = 表达式/数据;`

  /* 什么是「表达式」？？？
  答案一： 数据就是「表达式」。
  答案二： 通过 计算，可以最终得到数据的`算法`也叫「表达式」。
    问题： `1 + 1 * 9 / 2` 是不是 表达式？？
        ->  YES

  答案三：一句话总结，只要 能放到 等号右侧的，都是「表达式」。
    注：表达式的最终值，肯定是 `数据`。
*/

  // ---------
  // var data = 1 + 1 * 9;
  // console.log(data); // 10

  var num1, num2, num3; // 在 计算机中，声明了 三个变量，但都未给其 赋值。

  console.log(num1); // undefined
  console.log(num2); // undefined
  console.log(num3); // undefined
  // 注：undefined 的意义：即表示 声明了变量，但未给其赋值，则其默认值为 `undefined`

  // 问题1：会不会报 `num1 is not defined` 的错误？？？

  var data; // 声明变量 `data`，但未给其赋值；则其值，默认为 `undefined`。
  console.log(data); //undefined

  // ------------- 需求：将下述两个变量的值，交换：-------------
  var num11 = 123,
    num22 = 456; // 即 一个 var 声明了 两个变量；
  var temp; // 即 直接声明变量，并不需要给其赋值；temp 的默认值是 `undefined`
  temp = num11;
  num11 = num22;
  num22 = temp;
  // 456 123 'aaa' 'bbb'
  console.log(num11, num22, "aaa", "bbb"); // 注： console.log() 的用法：可以是 `console.log(表达式1, 表达式2, ...)`
  // ------------- 需求：将下述两个变量的值，交换：-------------

  /* 总结：声明语句的 常见写法：
    写法1：
      var 变量名 = 表达式;

    写法2：
      var 变量名;
        注：变量名的值为 undefined。

    写法3：（同时声明多个变量，并给其 赋值）
      var 变量名1 = 表达式1, 变量名2 = 表达式2, ...;


    写法4：（同时声明多个变量，但不给其 赋值）
      var 变量名1, 变量名2, ...;
  */
</script>
